13 research outputs found
A Compiler and Runtime Infrastructure for Automatic Program Distribution
This paper presents the design and the implementation of a compiler and runtime infrastructure for automatic program distribution. We are building a research infrastructure that enables experimentation with various program partitioning and mapping strategies and the study of automatic distribution's effect on resource consumption (e.g., CPU, memory, communication). Since many optimization techniques are faced with conflicting optimization targets (e.g., memory and communication), we believe that it is important to be able to study their interaction.
We present a set of techniques that enable flexible resource modeling and program distribution. These are: dependence analysis, weighted graph partitioning, code and communication generation, and profiling. We have developed these ideas in the context of the Java language. We present in detail the design and implementation of each of the techniques as part of our compiler and runtime infrastructure. Then, we evaluate our design and present preliminary experimental data for each component, as well as for the entire system
User-Defined Data Distributions in High-Level Programming Languages
One of the characteristic features of today’s high performance
computing systems is a physically distributed
memory. Efficient management of locality is essential
for meeting key performance requirements for these architectures.
The standard technique for dealing with
this issue has involved the extension of traditional sequential
programming languages with explicit message passing,
in the context of a processor-centric view of
parallel computation. This has resulted in complex and
error-prone assembly-style codes in which algorithms
and communication are inextricably interwoven.
This paper presents a high-level approach to the design
and implementation of data distributions. Our
work is motivated by the need to improve the current
parallel programming methodology by introducing
a paradigm supporting the development of efficient and
reusable parallel code. This approach is currently being
implemented in the context of a new programming
language called Chapel, which is designed in the HPCS
project Cascade
Reusable and Extensible High Level Data Distributions
This paper presents a reusable design of a data distribution framework for data parallel high performance applications. We are implementing the design in the context of the Chapel high productivity programming language. Distributions in Chapel are a means to express locality in systems composed of large numbers of processor and memory components connected by a network. Since distributions have a great effect on,the performance of applications, it is important that the distribution strategy can be chosen by a user. At the same time, high productivity concerns require that the user is shielded from error-prone, tedious details such as communication and synchronization. We propose an approach to distributions that enables the user to refine a language-provided distribution type and adjust it to optimize the performance of the application. Additionally, we conceal from the user low-level communication and synchronization details to increase productivity. To emphasize the generality of our distribution machinery, we present its abstract design in the form of a design pattern, which is independent of a concrete implementation. To illustrate the applicability of our distribution framework design, we outline the implementation of data distributions in terms of the Chapel language